motion_sensor --- 板载姿态传感器

motion_sensor 模块的主要功能与函数

姿态传感器说明

../../_images/2.png

如上图所示,roll,pitch(翻滚角,俯仰角)的方向以右手螺旋定则为标准。

小程水平放置时roll和pitch都为

roll的范围: -90° ~ 90°

pitch的范围: -180° ~ 180°

功能相关函数

motion_sensor.get_roll()

获取姿态角的翻滚角,返回的数据范围是 -90 ~ 90

motion_sensor.get_pitch()

获取姿态角的俯仰角,返回的数据范围是 -180 ~ 180

motion_sensor.get_yaw()

获取姿态角的偏航角,返回的数据范围是 0 ~ 360,由于小程板载的传感器是六轴传感器,没有电子罗盘。所以实际上偏航角只是使用了Z轴角速度的积分。它存在着积累误差。如果是想获得真实偏航角的,这个API不适合使用。

motion_sensor.get_rotation(axis)

获得小程在三个轴上转动的角度,以逆时针转动方向为正方向,参数:

  • axis 字符串类型,以 xyz 代表小程定义的坐标轴。
motion_sensor.reset_rotation(axis = "all")

初始化绕三个轴转动的当前角度为0,get_rotation() 函数将从 0 开始计算,参数:

  • axis 字符串类型,以 xyz 代表小程定义的坐标轴, all 代表全部的三个轴。也是这个函数的默认值。
motion_sensor.is_shaked()

检测小程是否有被摇晃,返回值是布尔值,其中 True 表示小程被晃动了,False 表示小程未被晃动。

motion_sensor.get_shake_strength()

如果小程被摇晃了,这个函数可以获得摇晃的强度,返回值的数值范围是 0 ~ 100, 数值越大,晃动的强度就越大。

motion_sensor.is_tilted_left()

检测小程是否向左倾斜,返回值是布尔值,其中 True 表示小程向左倾斜了,False 表示小程未向左倾斜。

motion_sensor.is_tilted_right()

检测小程是否向右倾斜,返回值是布尔值,其中 True 表示小程向右倾斜了,False 表示小程未向右倾斜。

motion_sensor.is_ears_up()

检测小程是否耳朵向上,返回值是布尔值,其中 True 表示小程耳朵朝上,False 表示小程耳朵没有朝上。

motion_sensor.is_ears_down()

检测小程是否耳朵向下,返回值是布尔值,其中 True 表示小程耳朵朝下,False 表示小程耳朵没有朝下。

motion_sensor.is_display_up()

检测小程是否表情面板朝上,返回值是布尔值,其中 True 表示小程表情面板朝上,False 表示小程表情面板没有朝上。

motion_sensor.is_display_down()

检测小程是否表情面板朝下,返回值是布尔值,其中 True 表示小程表情面板朝下,False 表示小程表情面板没有朝下。

motion_sensor.is_upright()

检测小程是否直立,返回值是布尔值,其中 True 表示小程直立,False 表示小程没有直立。

motion_sensor.get_acceleration(axis)

获取三个轴的加速度值,单位是 m/s^2,参数:

  • axis 字符串类型,以 xyz 代表小程定义的坐标轴。
motion_sensor.get_gyroscope(axis)

获取三个轴的角速度值,单位是 °/秒,参数:

  • axis 字符串类型,以 xyz 代表小程定义的坐标轴。

程序示例1:

import codey
import time

while True:
    roll = codey.motion_sensor.get_roll()
    pitch = codey.motion_sensor.get_pitch()
    yaw = codey.motion_sensor.get_yaw()
    print("roll:", end = "")
    print(roll, end = "")
    print("   ,pitch:", end = "")
    print(pitch, end = "")
    print("   ,yaw:", end = "")
    print(yaw)
    time.sleep(0.05)

程序示例2:

import codey

while True:
    if codey.motion_sensor.is_shaked():
        print("shake_strength:", end = "")
        print(codey.motion_sensor.get_shake_strength())

程序示例3:

import codey

while True:
    if codey.motion_sensor.is_tilted_left():
        print("tilted_left")
    if codey.motion_sensor.is_tilted_right():
        print("tilted_right")
    if codey.motion_sensor.is_ears_up():
        print("ears_up")
    if codey.motion_sensor.is_ears_down():
        print("ears_down")
    if codey.motion_sensor.is_display_up():
        print("display_up")
    if codey.motion_sensor.is_display_down():
        print("display_down")
    if codey.motion_sensor.is_upright():
        print("upright")